/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package otcapp.fabricas;

import java.util.HashMap;
import otcapp.experto.Experto;
import otcapp.experto.ExpertoConsultarInterno;
import otcapp.experto.ExpertoConsultarPersonal;
import otcapp.experto.ExpertoConsultarPieza;
import otcapp.experto.decoradores.*;

/**
 *
 * @author diego
 */
public class FabricaExpertos {

    private static FabricaExpertos instancia;
    private HashMap<expertos, Experto> expertos = new HashMap<>();

    public static FabricaExpertos getInstancia() {
        if (instancia == null) {
            instancia = new FabricaExpertos();
        }
        return instancia;
    }

    private FabricaExpertos() {
    }

    public enum expertos {

        ABM_PERSONAL, ASIGNAR_PROFESIONAL, CONSULTAR_PERSONAL,CONSULTAR_PIEZA, INGRESAR_INTERNO, CONSULTAR_INTERNO,INGRESAR_PIEZA, SEGURIDAD,SUPERVISIONES
    }

    public Experto getExperto(expertos expertoNombre) {
        switch (expertoNombre) {
            case ABM_PERSONAL:
                return new ExpertoABMPersonalDecorador();
            case ASIGNAR_PROFESIONAL:
                return new ExpertoAsignarProfesionalDecorador();
            case CONSULTAR_PERSONAL:
                return new ExpertoConsultarPersonal();
            case CONSULTAR_PIEZA:
                if(expertos.get(expertoNombre)== null){
                    expertos.put(expertoNombre, new ExpertoConsultarPieza());
                }
                return expertos.get(expertoNombre);
            case INGRESAR_PIEZA:
                return new ExpertoIngresarPiezaDecorador();
            case INGRESAR_INTERNO:
                return new ExpertoInternoDecorador();
            case CONSULTAR_INTERNO:
                return new ExpertoConsultarInterno();
            case SEGURIDAD:
                return new ExpertoSeguridadDecorador();
            case SUPERVISIONES:
                return new ExpertoSupervisionesDecorador();
            default:
                return null;

        }
    }
}
